IPマスカレードとDNS名を指定したファイアウォールでDev.IOにしか接続できないVPCを作ってみた
Sophos UTMをNATインスタンス兼ファイアウォールとして利用してみました。 Sophos UTMのファイアウォール機能は、送信元や宛先にDNS名を指定できます。 Windowsインスタンスのインターネット接続は、Sophos UTMを経由しファイアウォールで許可された宛先(Dev.IO)のみ接続可能にしました。
VPC内の通信はUTMを経由しないため許可されます。 本記事では記載しませんが、VPC内の通信はNetwork ACLやセキュリティグループで制御するといいでしょう。
UTMでNATインスタンスを作成
UTMのローンチ、言語、タイムゾーン、アップデートの手順はこちらをご覧ください。 アップデートまでが完了している前提で記載します。
UTMのセキュリティグループに許可を追加
UTMのセキュリティグループに、VPC内からの全ての接続を許可するルールを追加します。
IPマスカレードの有効化
今回はNATにIPマスカレードを利用することにしました。 VPC内のEC2がインターネット接続するとき、送信元IPはUTMのElastic IPになります。
[ネットワークプロテクション]-[NAT]-[新規マスカレードルール]を選択します。 "ネットワーク"の"+"を選択し、VPCのアドレスを登録します。
スイッチを選択し、有効化します。
ファイアウォールルールの追加
初期状態では、ファイアウォールが有効でルールがない状況です。 許可ルールを追加するために、[ネットワークプロテクション]-[ファイアウォール]-[新規ルール]を選択します。
送信元にVPC、宛先にインターネット、アクションに許可を指定します。 サービスはAny(全部)としました。
スイッチを選択し、有効化します。
送信元/送信先チェックの無効化
UTMの送信元/送信先チェックの無効化を無効化します。 NATとして利用する場合は無効にする必要があります。詳細はこちらをご覧下ください。 EC2コンソールからアクションを選択します。
ルートテーブルの変更
UTM経由でインターネット接続するサブネットのルートテーブルを変更します。 インターネット宛て(0.0.0.0/0)のターゲットをUTMにします。
Windowsインスタンスでの確認
Windowsインスタンスで、Chromeを起動しhttps://checkip.amazonaws.com/
に接続します。
UTMのIPアドレスが表示されれば、成功です。
UTM経由でインターネット接続できました!
Dev.IOにだけ接続を許可
特定の宛先にのみ接続できるようにしてみます。 ファイアウォールルールを編集し、"Internet IPv4"を削除します。 代わりに本サイト関連のドメインを登録します。 タイプはDNSグループとします。
DNSグループでは、TTLにしたがって定期的に再解決します。 DNSホストでは単一の1IPアドレスを受け取りますが、DNSグループを指定すると複数のリソースレコードを受け取れます。 dev.classmethod.jpで2つのIPを受け取りました。
Windowsインスタンスで本サイトに接続すると、記事を閲覧できます。
https://checkip.amazonaws.com/
には接続できません。ファイアウォールの許可ルールがなくなったからです。
ログの確認
[ネットワークプロテクション]-[ファイアウォール]-[ライブログを開く]から、リアルタイムのログを確認できます。
[ログとレポート]-[ネットワークプロテクション]-[ファイアウォール]から、様々な視点で状況を確認できます。 利用されているサービスを確認すると、4位はHTTPで15パケットです。
おわりに
Sophos UTMをNATインスタンス兼ファイアウォールとして利用してみました。 UTMのファイアウォール機能は、送信元や宛先にDNS名を指定できます。
EC2からインターネットへの接続は、本サイトのみ可能にしました。 ファイアウォールルールの宛先にDNS名を指定したい場合、Sophos UTMが活躍すると思います。